<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        #box{width: 100px;height: 100px;background: #ccc;}
    </style>
</head>
<body>
    <div id="box"></div>
    <!-- <input type="text" id="txt"> -->
</body>
<script>
    // 1. 某个公司采用公用电话传递数据，数据是一个四位的整数，在传递过程中是加密的，加密规则如下：每位数字都加上5，然后用除以10的余数代替该数字，再将第一位和第四位交换，第二位和第三位交换，请编写一个函数，传入原文，输出密文
    // - 3715
    // - 3，7，1，5
    // - 8，12，6，10
    // - 8，2，6，0
    // - 0，6，2，8
    // - 0628

    // function fn(n){
    //     var a = parseInt(n/1000);
    //     var b = parseInt(n/100)%10;
    //     var c = parseInt(n/10)%10;
    //     var d = n%10;

    //     a = (a + 5)%10;
    //     b = (b + 5)%10;
    //     c = (c + 5)%10;
    //     d = (d + 5)%10;

    //     return (""+d+c+b+a);
    // }
    // console.log(fn(3715));

    // console.log("=============")

    // 4. 利用递归求两个数字最大公约数（看图编程）
    // function fn(m,n){
    //     var r = m%n;
    //     m = n;
    //     n = r;
    //     if(r === 0){
    //         return m;
    //     }else{
    //         return fn(m,n);
    //     }
    // }
    // console.log(fn(60,90));

    // console.log("=================");

    // 5. 编写一个函数，输入n为偶数时，调用函数求1/2+1/4+...+1/n,当输入n为奇数时，调用函数求1/1+1/3+...+1/n
    //     - 循环和递归
    // 循环
    // function fn(n){
    //     if(n%2 === 0){
    //         var sum = 0;
    //         for(var i=2;i<=n;i+=2){
    //             sum += 1/i;
    //         }
    //         return sum;
    //     }else{
    //         var sum = 0;
    //         for(var i=1;i<=n;i+=2){
    //             sum += 1/i;
    //         }
    //         return sum;
    //     }
    // }
    // console.log(fn(5));

    // 递归

    // 偶数：fn(6) = 1/6 + fn(4);
                    //    fn(4) = 1/4 + fn(2)
                                    //   fn(2) = 1/2
    //      fn(n) = 1/n + fn(n-2)
    //      fn(2) = 1/2

    // 奇数：fn(7) = 1/7 + fn(5);
                        // fn(5) = 1/5 + fn(3)
                                        // fn(3) = 1/3 + fn(1)
                                                        // fn(1) = 1
    //      fn(n) = 1/n + fn(n-2)
    //      fn(1) = 1

    // function fn(n){
    //     if(n === 1){
    //         return 1;
    //     }
    //     if(n === 2){
    //         return 1/2;
    //     }
    //     return 1/n + fn(n-2);
    // }
    // console.log(fn(5));
    

    // 6. 尝试测试：常见事件与函数的结合
    var box = document.getElementById("box");
    var txt = document.getElementById("txt");

    box.onclick = function(){
        console.log("click")
    }
    box.ondblclick = function(){
        console.log("dblclick")
    }
    box.oncontextmenu = function(){
        console.log("contextmenu")
    }
    box.onmousedown = function(){
        console.log("mousedown")
    }
    box.onmouseup = function(){
        console.log("mouseup")
    }
    box.onmousemove = function(){
        console.log("mousemove")
    }
    box.onmouseover = function(){
        console.log("mouseover")
    }
    box.onmouseout = function(){
        console.log("mouseout")
    }


    document.onkeydown = function(){
        console.log("keydown")
    }
    document.onkeyup = function(){
        console.log("keyup")
    }

    window.onfocus = function(){
        console.log("focus")
    }
    window.onblur = function(){
        console.log("onblur")
    }

</script>
</html>